Python 24일 코스 - Day 20: 가상환경과 의존성

Day 20: 가상환경과 의존성

가상환경이 필요한 이유

프로젝트마다 다른 라이브러리 버전이 필요할 수 있습니다. 가상환경은 프로젝트별로 독립된 Python 환경을 만들어줍니다.

venv로 가상환경 만들기

# 가상환경 생성
python -m venv myenv

# 활성화 (Windows)
myenv\Scripts\activate

# 활성화 (macOS/Linux)
source myenv/bin/activate

# 비활성화
deactivate

pip 패키지 관리

# 패키지 설치
pip install requests

# 특정 버전 설치
pip install requests==2.31.0

# 설치된 패키지 확인
pip list

# requirements.txt 생성
pip freeze > requirements.txt

# requirements.txt로 일괄 설치
pip install -r requirements.txt

requirements.txt 예시

requests==2.31.0
beautifulsoup4==4.12.2
python-dotenv==1.0.0

프로젝트 구조 모범 사례

my-project/
├── venv/              # 가상환경 (gitignore에 추가)
├── src/
│   └── main.py
├── tests/
│   └── test_main.py
├── .gitignore
├── .env.example       # 환경변수 템플릿
├── requirements.txt   # 의존성 목록
└── README.md

.gitignore 설정

# 가상환경
venv/
.venv/
env/

# 환경변수
.env

# Python 캐시
__pycache__/
*.pyc
*.pyo

# IDE
.vscode/
.idea/

환경변수 관리

# .env.example (커밋 O)
# API_KEY=
# DATABASE_URL=

# .env (커밋 X)
# API_KEY=sk-xxxx
# DATABASE_URL=sqlite:///myapp.db

from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.getenv("API_KEY")
db_url = os.getenv("DATABASE_URL", "sqlite:///default.db")

오늘의 연습문제

  1. 새 프로젝트용 가상환경을 만들고 필요한 패키지를 설치한 뒤 requirements.txt를 생성하세요.
  2. .env 파일에서 설정을 읽어 사용하는 프로그램을 작성하세요.
  3. 두 프로젝트에서 서로 다른 버전의 같은 라이브러리를 사용하는 상황을 재현하세요.

이 글이 도움이 되었나요?